在config文件中的配置
要使用log4net,首先要在config文件的<configSections>节点中增加配置(如果没有这个节点请手动增加),如下: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections> 除此之外,还要在顶级节点<configuration>下增加<log4net>子节点。在<log4net>节点下就可以增加<appender>子节点,每个<appender>子节点代表一种记录日志的方式(仅在这里配置了不代表启用了)。具体说来有如下Appender:AdoNetAppender:利用ADO.NET记录到数据库的日志。AnsiColorTerminalAppender:在ANSI 窗口终端写下高亮度的日志事件。AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。ConsoleAppender:将日志输出到控制台。EventLogAppender:将日志写到Windows Event Log.FileAppender:将日志写到文件中。LocalSyslogAppender:将日志写到local syslog service (仅用于UNIX环境下).MemoryAppender:将日志存到内存缓冲区。NetSendAppender:将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。RemotingAppender:通过.NET Remoting将日志写到远程接收端。RollingFileAppender:将日志以回滚文件的形式写到文件中。SmtpAppender:将日志写到邮件中。TraceAppender:将日志写到.NET trace 系统。UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。关于使用log4net中可能会使用到的一些参数%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息%n(new line):换行%d(datetime):输出当前语句运行的时刻%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数%t(thread id):当前语句所在的线程ID%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等%c(class):当前日志对象的名称,例如:%f(file):输出语句所在的文件名。%l(line):输出语句所在的行号。%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。 下面以一个实际的例子来说明问题,比如在配置中有“%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline”,那么实际的日志中会是如下格式:“记录时间:2010-11-17 16:16:36,561 线程ID:[9] 日志级别:文件:所在行ERROR 出错类:Log4NetDemo.Program property:[(null)] - 错误描述:errorSystem.Exception: 在这里发生了一个异常,Error Number:2036084948”
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Log4netSimple{ public class LogHelper { private LogHelper() { SetConfig(); } private static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); private static bool IsLoadConfig = false; private static void SetConfig() { log4net.Config.DOMConfigurator.Configure(); } /// <summary> /// 记录日志 /// </summary> /// <param name="info">提示信息</param> public static void WriteLog(string info) { if (!IsLoadConfig) { SetConfig(); IsLoadConfig = true; } if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 记录异常 /// </summary> /// <param name="info">错误</param> /// <param name="ex">Exception</param> public static void WriteLog(string info, Exception ex) { if (!IsLoadConfig) { SetConfig(); IsLoadConfig = true; } if (loginfo.IsErrorEnabled) { loginfo.Error(info, ex); } } }}
评论